package api

import (
	"ginfast/app/weixin/dto"
	"ginfast/app/weixin/model"
	"ginfast/pkg/ginx"
	"ginfast/util"
)

// Material 素材
type Material struct {
}

// PageHandler 列表
func (Material) PageHandler(c *ginx.Context) {
	var p dto.Where
	if err := c.MustBind(&p); err != nil {
		return
	}
	var data []model.Material
	total, _ := p.DbModelWhere(&model.Material{}).Find(&data)
	c.JSONWriteTotal(total, data)
}

// DeleteHandler 删除
func (Material) DeleteHandler(c *ginx.Context) {
	util.Deletes(&model.Material{}, c)
}

type materialUpload struct {
	MediaType    string `form:"mediaType"`
	Title        string `form:"title"`
	Introduction string `form:"introduction"`
}

// UploadFileHandler 上传
func (Material) UploadFileHandler(c *ginx.Context) {
	// var p materialUpload
	// if err := c.ShouldBind(&p); err != nil {
	// 	ginx.JSONWriteError(err, c)
	// 	return
	// }
	// path := "/public/wx/material/"
	// saveDir := configs.Default.Local.ServeRootPath + path
	// os.MkdirAll(saveDir, os.ModePerm)
	// var (
	// 	fileName string
	// 	fileType string
	// 	fileHead *multipart.FileHeader
	// 	err      error = errors.New("invaild type")
	// )
	// switch p.MediaType {
	// case "image":
	// 	fileHead, err = c.FormFile("file")
	// 	fileType = ".png"
	// case "video":
	// case "music":
	// case "news":
	// default:
	// 	return
	// }
	// if err != nil {
	// 	ginx.JSONWriteError(err, c)
	// 	return
	// }
	// if p.Title == "" {
	// 	curdate := time.Now().UnixNano()
	// 	fileName = strconv.FormatInt(curdate, 10) + fileType
	// } else {
	// 	fileName = p.Title + fileType
	// }
	// dts := saveDir + fileName
	// if err := c.SaveUploadedFile(fileHead, dts); err != nil {
	// 	ginx.JSONWriteError(err, c)
	// 	return
	// }
	// fileURL := configs.Default.Local.ServeRoot + path + fileName
	// material := &model.WxMaterial{}
	// material.URL = fileURL
	// material.Tag = p.MediaType
	// material.Name = p.Title
	// if err := orm.DbCreate(material); err != nil {
	// 	ginx.JSONWriteError(err, c)
	// 	return
	// }
	// ginx.JSONOK().WriteData(ginx.H{
	// 	"data": ginx.H{
	// 		"name":  fileName,
	// 		"label": p.Title,
	// 		"value": fileURL,
	// 	}}, c)
}

// UploadNewsHandler 图文
func (Material) UploadNewsHandler(c *ginx.Context) {
}

func (o Material) Routers(r *ginx.RouterGroup) {
	r.GET("/page", o.PageHandler)
	r.DELETE("", o.DeleteHandler)
	r.POST("/materialFileUpload", o.UploadFileHandler)
	r.POST("/materialNews", o.UploadNewsHandler)
}
